# Makefile通用规则文件
#
#


# 定义一些命令全称的变量名
CC=$(PREFIX)gcc
LD=$(PREFIX)ld -v
AR=$(PREFIX)ar
READELF=$(PREFIX)readelf
SIZE=$(PREFIX)size
OBJCOPY=$(PREFIX)objcopy
OBJDUMP=$(PREFIX)objdump
NM=$(PREFIX)nm
GDB=$(PREFIX)gdb

MKDIR = mkdir -p
RM    = rm -rf
TOUCH = touch

ifeq ($(OPTLVL), -O0)
COMMONFLAGS += -DDEBUG -DUSE_FULL_ASSERT
endif

COMMONFLAGS += $(OPTLVL) -mcpu=cortex-m3 -mthumb -mfloat-abi=soft
COMMONFLAGS += -ffunction-sections -fdata-sections
COMMONFLAGS += -Wall -Werror -Winline -Wredundant-decls -Wshadow -Wwrite-strings
COMMONFLAGS += -std=c99

COMMONFLAGSLIB = $(COMMONFLAGS) -g3

LDFLAGS += $(COMMONFLAGS) -fno-exceptions -L$(LIBDIR) -nostartfiles


# 库和目标文件生成目录
OUTS = $(TOP)/Outputs
LIBDIR := $(OUTS)/libs
OBJDIR := $(OUTS)/objs
BINDIR := $(OUTS)/bin


CFLAGS += -D$(FamilyOfMcu) -DUSE_STDPERIPH_DRIVER -DARM_MATH_CM3\
		  -DVECT_TAB_OFFSET=$(VECT_TAB_OFFSET) \
		  $(COMMONFLAGS) $(INCLUDE)
CFLAGSLIB += -D$(FamilyOfMcu) -DUSE_STDPERIPH_DRIVER -DARM_MATH_CM3\
			 -DVECT_TAB_OFFSET=$(VECT_TAB_OFFSET) \
			 $(COMMONFLAGSLIB) $(INCLUDE) -c



# 本模块的 obj 文件输出目录
MOD_OBJS_DIR = $(OBJDIR)/$(MOD_NAME)
# 二进制库完整文件名
LIBS = lib$(LIB_BASE_NAME).a

# 保存存在 main 函数的那个二进制库文件的路经的文件
ENTRY_FILE := $(OUTS)/entry_lib_name_info

# 保存了本工程中默认(第一序列)的二进制库链接选项列表文件
LDFLAGS_FILE := $(OUTS)/ld_lib_name_info
# 保存本工程中倒数第一序列二进制库链接选项列表的文件
LDFLAGS_FILE1 := $(OUTS)/ld_lib_name_info.1
# 保存本工程中倒数第二序列二进制库链接选项列表的文件
LDFLAGS_FILE2 := $(OUTS)/ld_lib_name_info.2
# 保存本工程中倒数第三序列二进制库链接选项列表的文件
LDFLAGS_FILE3 := $(OUTS)/ld_lib_name_info.3


